// base64_client.h
#ifndef BASE64_CLIENT_H
#define BASE64_CLIENT_H

#include <vector>
#include <string>
#include <cstdint>
#include <cstring> 

class Base64Client {
private:
    // Base64 编码表
    static const std::string base64_chars;
    // 构造函数私有化，防止外部实例化
    Base64Client() = default;
    // 拷贝构造函数和赋值运算符私有化，防止拷贝和赋值
    Base64Client(const Base64Client&) = delete;
    Base64Client& operator=(const Base64Client&) = delete;

public:
    // 获取单例实例的静态方法
    static Base64Client& getInstance() {
        static Base64Client instance;
        return instance;
    }

    // Base64 编码函数
    static std::string Base64Encode(const std::vector<int16_t>& input);
    static std::string Base64EncodeStr(const unsigned char *data, size_t len);

    // Base64 解码函数
    static std::vector<int16_t> Base64Decode(const std::string& input);

    // 模拟生成uuid
    std::string GenerateUuid();

    // 构建update配置豆包消息体
    std::string ConstructUpdateConfigReq();

    // 构建豆包Audio消息体
    std::string ConstructAudioMsgReq(const std::vector<int16_t>& input_audio);

    // 构建豆包AudioFinish消息体
    std::string ConstructAudioFinishMsgReq();
};

#endif // BASE64_CLIENT_H